调度工具crontab
比如一个可执行文件test.sh
文件内容
1 | !/bin/bash (解释器) |
执行这个shell脚本需要x执行权限
执行命令
1 | ./test.sh |
后缀 .sh 和 第一行#!/bin/bash 没有,sh命令去执行也可以执行成功
1 | [root@hadoop ~]# crontab -l |
每个星号代表的意思:分 小时 日 月 周
*/6 代表每隔六[分钟 ]
*/1=* 代表每一分钟
如何按照每10s执行一次?
可以修改脚本来完成任务,crontab不必改变
1 | [root@hadoop ~]# cat test1.sh |
后台执行
1 | ./test.sh & |
软连接
假设公司有两个版本的MySQL,有两个版本的文件夹
1 | [root@hadoop ~]# ll |
一开始肯定使用的低版本,如果要升级到高版本怎么方便?
1 | [root@hadoop ~]# ln -s /root/mysql5.6 /root/mysql |
在使用软连接后我们所有的MySQL相关路径只要配置/root/mysql软连接的目标path即可。
创建软连接方式:ln -s 原path 目标path
a.CDH升级 原文件不见了 光标会跳动进行提示:
两种方法
1、找原文件文件夹;
2、 删除快捷键文件文件夹(rm -rf /root/mysql)–》重新做新的软连接 (升级高版本操作也是这个操作:删除、重做)
b.个人建议 绝对路径
c.系统盘 / 50G
数据盘 /data01 1T SSD
大数据的默认日志都是在/var/log里
比如
1 | CDH log(默认保留10份) : |
改动之前停服务,然后进行以下操作
1 | mkdir /data01/log/ |
注意: 权限问题chmod chown,因为移动的时候会发生权限变更(软连接文件夹和源文件夹都要进行修改)
1、如果不记得移动后的权限,可以参考另一台节点的相对目录来设置权限
2、实在懒得比对就全改为777
修改机器名称
centos7.x
[root@JD ~]# hostnamectl
Static hostname: JD
Icon name: computer-vm
Chassis: vm
Machine ID: 983e7d6ed0624a2499003862230af382
Boot ID: c78cf2bffbea43d8a88110b3b8fa0c5f
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-327.el7.x86_64
Architecture: x86-64
[root@JD ~]# hostnamectl --help
hostnamectl [OPTIONS...] COMMAND ...
Query or change system hostname.
-h --help Show this help
--version Show package version
--no-ask-password Do not prompt for password
-H --host=[USER@]HOST Operate on remote host
-M --machine=CONTAINER Operate on local container
--transient Only set transient hostname
--static Only set static hostname
--pretty Only set pretty hostname
Commands:
status Show current hostname settings
set-hostname NAME Set system hostname
set-icon-name NAME Set icon name for host
set-chassis NAME Set chassis type for host
set-deployment NAME Set deployment environment for host
set-location NAME Set location for host
[root@JD ~]# hostnamectl set-hostname hadoop001
[root@hadoop001 ~]# cat /etc/hostname
hadoop001
[root@hadoop001 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.3 hadoop001
jps真正使用
位置在哪
[hadoop@hadoop001 ~]$ which jps
/usr/java/jdk1.8.0_45/bin/jps
[hadoop@hadoop001 ~]$
[hadoop@hadoop001 ~]$ jps
2594 NameNode
2724 DataNode
3061 ResourceManager
3173 NodeManager
3526 Jps
2879 SecondaryNameNode
[hadoop@hadoop001 ~]$ jps --help
illegal argument: --help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>]
Definitions:
<hostid>: <hostname>[:<port>]
[hadoop@hadoop001 ~]$ jps -l
2594 org.apache.hadoop.hdfs.server.namenode.NameNode
2724 org.apache.hadoop.hdfs.server.datanode.DataNode
3061 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager
3173 org.apache.hadoop.yarn.server.nodemanager.NodeManager
3610 sun.tools.jps.Jps
2879 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode
[hadoop@hadoop001 ~]$
对应的进程的标识文件在哪?
# 可以进入这个文件夹查看jps得出的进程号对应的详情文件
[root@hadoop001 tmp]# ll
drwxr-xr-x 2 hadoop hadoop 61 Nov 30 21:23 hsperfdata_hadoop
进程是 hadoop启动的 默认存储在 /tmp/hsperfdata_username
作用
查询 pid 进程名称
process information unavailable CDH
进程所属的用户 去执行 jps命令,只显示自己的相关的进程信息
root用户 看所有的,但是显示不可用:process information unavailable
真假判断 :
# 判断显示为process information unavailable 是否真的不可用
[root@hadoop001 hsperfdata_hadoop]# ps -ef|grep 31488
root 5291 3912 0 21:32 pts/1 00:00:00 grep --color=auto 31488
[root@hadoop001 hsperfdata_hadoop]#
#自己过滤自己 count为0
[root@hadoop001 hsperfdata_hadoop]# ps -ef|grep 31488 | grep -v grep | wc -l
0
#查看一个可用的进程,自己过滤自己 count为1
[root@hadoop001 hsperfdata_hadoop]# ps -ef|grep 2594 | grep -v grep | wc -l
1
[root@hadoop001 hsperfdata_hadoop]#
jps查看文件 不影响 进程的启动和停止
jps看的就是文件的记录,如果讲文件mv移走,jps是看不出来进程是否有问题(实际mv走文件,进程本身无问题)
建议使用ps来查看进程,特别是脚本中。
Linux机制 oom-kill机制
free -m 查看机器的内存情况
某个进程 memory 使用过高,机器为了保护自己,放置夯住,去杀死内存使用最多的进程。
比如 5806 kill
kill log info 断了 cat log找error是找不到的
VM 2G CDH mysql+server ok 挂了
意识到:
以后进程挂了–》log位置–》error:
cat /var/log/messages | grep oom
有error具体分析;
没 想到oom机制;
Linux机制 /tmp默认存储周期 1个月 会自动清空不在规则以内的文件
[root@hadoop001 tmp]# cat yarn-hadoop-nodemanager.pid
7855
[root@hadoop001 tmp]#
#建议调整sh执行文件下的PID目录,不要把大数据任何目录放入tmp
[hadoop@hadoop001 hadoop]$ vi hadoop-env.sh
export HADOOP_PID_DIR=/home/hadoop/tmp
[hadoop@hadoop001 hadoop]$ cat yarn-env.sh
export YARN_PID_DIR=/home/hadoop/tmp
[hadoop@hadoop001 ~]$ cd tmp
[hadoop@hadoop001 tmp]$ ll
total 20
-rw-rw-r-- 1 hadoop hadoop 6 Nov 30 22:05 hadoop-hadoop-datanode.pid
-rw-rw-r-- 1 hadoop hadoop 6 Nov 30 22:05 hadoop-hadoop-namenode.pid
-rw-rw-r-- 1 hadoop hadoop 6 Nov 30 22:05 hadoop-hadoop-secondarynamenode.pid
-rw-rw-r-- 1 hadoop hadoop 6 Nov 30 22:03 yarn-hadoop-nodemanager.pid
-rw-rw-r-- 1 hadoop hadoop 6 Nov 30 22:02 yarn-hadoop-resourcemanager.pid
[hadoop@hadoop001 tmp]$